package code.example.javassist.test;

import javassist.ClassPath;
import javassist.ClassPool;
import javassist.CtClass;

import java.lang.reflect.Field;

/**
 * CtClass.setName 可以生成一个新类，方法与属性与源类一样，只是类名不一样
 */
public class CopyAClass {

    public static void main(String [] args){
        try {
            ClassPool classPool = ClassPool.getDefault();
            CtClass modelCtClass = classPool.get(Model.class.getName());
            modelCtClass.setName("code.example.javasssit.test.TempModel");
            Class classz = modelCtClass.toClass();
            String name = classz.getName();
            System.out.println(name);
            Field[]field = classz.getDeclaredFields();
            for(int i=0;i<field.length;i++){
                System.out.println(" field = "+field[i].getName());
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
